package managerOptymalizacji;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Krzysiek
 */
public class WynikAnalizy
{
    private List<Wynik> wyniki = new ArrayList<Wynik>();

    public String dodajWynik(double ocena, String algorytm, String transport, String terminal)
    {
        Wynik nowy = new Wynik();
        nowy.ocena = ocena;
        nowy.algorytm = algorytm;
        nowy.transport = transport;
        nowy.terminal = terminal;

        wyniki.add(nowy);

        return nowy.pokazOpis();
    }

    public List<Wynik> getWyniki()
    {
        return wyniki;
    }

    public class Wynik
    {
        public double ocena;
        public String algorytm;
        public String transport;
        public String terminal;

        public String pokazOpis()
        {
            StringBuilder sb = new StringBuilder();
            sb.append("Algorytm: ").append(algorytm).append("\n");
            sb.append("Ocena: ").append(ocena).append("\n");
            sb.append("Transport: ").append(transport).append(" , ");
            sb.append("Terminal: ").append(terminal).append("\n");
            
            return sb.toString();
        }
    }

    public void zapiszDoPliku(String sciezka) throws IOException
    {
        File file = new File(sciezka);
        BufferedWriter writer = new BufferedWriter(new FileWriter(file));

        String result = generujRaport();

        writer.write(result);
        writer.close();
    }

    private String generujRaport()
    {
        StringBuilder sb = new StringBuilder();

        for(Wynik w : wyniki)
        {
            sb.append(w.ocena).append(" | ");
            sb.append(w.algorytm).append(" | ");
            sb.append(w.terminal).append(" | ");
            sb.append(findZapelnienie(w.terminal)).append(" | ");
            sb.append(w.transport).append("\r\n");
            
        }

        return sb.toString();
    }

    private double findZapelnienie(String terminal)
    {
        String[] splitted = terminal.split("_");
        return Double.parseDouble(splitted[1]);
    }


}
